#ifndef SPACE_TOUCH_KERNEL_KEYBARD_HANDLE_H
#define SPACE_TOUCH_KERNEL_KEYBARD_HANDLE_H

#include <array>
#include <stdint.h>

struct KeyBoardData
{
    uint64_t wParam;
    uint32_t vkCode;
    uint32_t scanCode;
    uint32_t flags;
    uint32_t time;
    uint64_t dwExtraInfo;
};

using PFN_KeyboardProcess = void (*)(const KeyBoardData *);

class Keyboard
{
public:
    static Keyboard &GetInstance();

    void AddProc(PFN_KeyboardProcess fn);
    void DelProc(PFN_KeyboardProcess fn);

    bool IsKeyDown(const char key);

private:
    Keyboard();
    ~Keyboard();

private:
    bool mInited;
};

#endif // SPACE_TOUCH_KERNEL_KEYBARD_HANDLE_H